index.tsx 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { PermissionAction } from '@supabase/shared-types/out/constants'
  2. import { PageContainer } from 'ui-patterns/PageContainer'
  3. import { PageSection } from 'ui-patterns/PageSection'
  4. import { PublicationsList } from '@/components/interfaces/Database/Publications/PublicationsList'
  5. import DatabaseLayout from '@/components/layouts/DatabaseLayout/DatabaseLayout'
  6. import { DefaultLayout } from '@/components/layouts/DefaultLayout'
  7. import { PageLayout } from '@/components/layouts/PageLayout/PageLayout'
  8. import { NoPermission } from '@/components/ui/NoPermission'
  9. import { useAsyncCheckPermissions } from '@/hooks/misc/useCheckPermissions'
  10. import type { NextPageWithLayout } from '@/types'
  11. const DatabasePublications: NextPageWithLayout = () => {
  12. const { can: canViewPublications, isSuccess: isPermissionsLoaded } = useAsyncCheckPermissions(
  13. PermissionAction.TENANT_SQL_ADMIN_READ,
  14. 'publications'
  15. )
  16. if (isPermissionsLoaded && !canViewPublications) {
  17. return <NoPermission isFullPage resourceText="view database publications" />
  18. }
  19. return (
  20. <PageLayout title="Database Publications" size="large">
  21. <PageContainer size="large">
  22. <PageSection className="gap-y-4">
  23. <PublicationsList />
  24. </PageSection>
  25. </PageContainer>
  26. </PageLayout>
  27. )
  28. }
  29. DatabasePublications.getLayout = (page) => (
  30. <DefaultLayout>
  31. <DatabaseLayout title="Publications">{page}</DatabaseLayout>
  32. </DefaultLayout>
  33. )
  34. export default DatabasePublications